A communication network is a geographically distributed collection of nodes interconnected by communication links and segments for transporting communications (e.g., data) between communication units (end nodes), such as personal computers, certain telephones, personal digital assistants (PDAs), video units and the like. Many types of communication networks are available, with the types ranging from local area networks (LANs) to wide area networks (WANs). LANs typically connect nodes over dedicated private communication links located in the same general physical location, such as a building or campus. WANs, on the other hand, typically connect large numbers of geographically dispersed nodes over long-distance communication links, such as common carrier telephone lines. The Internet is an example of a WAN that connects various networks throughout the world, providing global communication between nodes in the various networks. The nodes typically communicate over the network by exchanging discrete frames or packets of data according to predefined protocols, such as the Transmission Control Protocol/Internet Protocol (TCP/IP). In this context, a protocol consists of a set of rules defining how the nodes interact with each other.
A communication network may comprise a series of intermediate nodes (e.g., routers) that are configured to carry communications through the network to the end nodes. Routers are often configured to “route” data, such as packets, between various nodes in the network. Routing is typically performed at layer-3 (L3), which is the network layer of the Open Systems Interconnection Reference Model (OSI-RM). Routers often maintain forwarding databases (FDBs), which are typically configured to hold routing information including L3 addresses and interface information that the router uses to determine where data (e.g., data packets) are to be forwarded in order to reach their destination. For example, a router may have a routing database containing one or more entries wherein each entry contains an L3 destination address of a destination node and interface information about an interface on the router through which the destination node may be reached. A data packet containing a destination address that matches a destination address of an entry in the routing table is forwarded by the router to the interface specified by the matching entry for transfer to the destination node.
A router may execute one or more routing protocols that enable the router to route packets and exchange routing information with other routers in the network. The routers often use this information to configure (e.g., compute) their FDBs. The routing protocols may include distance-vector protocols, such as the Routing Information Protocol (RIP), or link-state protocols, such as the Intermediate-System-to-Intermediate-System (IS-IS) protocol and the Open Shortest Path First (OSPF) protocol.
Routing information is typically exchanged between the routers in the form of advertisement messages. For example, nodes executing the IS-IS protocol exchange routing information using an advertisement message called a Link State Packet (LSP). Likewise, nodes executing the OSPF protocol exchange routing information using an advertisement message called a Link State Advertisement (LSA). An intermediate node that acquires an advertisement message may use information contained therein to update its FDB.
Communication networks are increasingly being used to transport many forms of information including, e.g., voice and video information. Information may be carried on a communication network using various technologies, such as Voice over IP (VoIP). VoIP refers to a group of technologies that may be used to transmit e.g., voice information over communication networks from a source (calling party) to a destination (called party). Such networks may include a plurality of agents that convert e.g., voice and/or video information from its traditional form to a form that is suitable for packet transmission. In other words, the agent encodes, compresses and encapsulates the information into a plurality of data packets that are suitable for being carried by the communication network. Examples of agents include IP telephones, VoIP network interfaces, certain private branch exchanges (PBXs), personal computers (PCs) running communication applications, certain personal digital assistants (PDAs), network devices providing voice gateway services and so on.
In certain communication networks, such as VoIP networks and various IP networks, a session protocol may be employed to establish a session (connection) that supports a call between a calling party and a called party. An example of a session protocol that is commonly used is the well-known Session Initiation Protocol (SIP) which is described in J. Rosenberg et al., “SIP: Session Initiation Protocol,” Internet Engineering Task Force (IETF) Request For Comments (RFC) 3261. SIP operates at the application layer of the OSI-RM and is defined to establish and maintain sessions between endpoints (e.g., SIP-based telephones) in a communication network.
In accordance with SIP, endpoints are referred to as User Agents (UAs). When a UA comes on-line, it typically registers with a registration service, called a policy data point (PDP), using a SIP message containing a SIP “register” (REGISTER) command. The PDP maintains information about the UA which may include its location, how to reach it and authentication information associated with the UA that may be used to authenticate the UA. Typically, after a UA is registered, the UA is available to receive as well as initiate calls.
At the beginning of a call, a session is typically established between the UAs of the call's calling and called parties to support the call. Establishing a session between the parties often involves (a) authenticating both parties and (b) successfully exchanging a sequence of messages between the parties in a predetermined manner. Authentication usually involves ensuring the parties have permission to establish the call. The sequence of messages typically includes an invite (INVITE) message issued by the calling party to the called party, an acknowledgement (“200 OK”) message issued by the called party to the calling party followed by an acknowledgement (ACK) message issued by the calling party to the called party. After the session is established, a channel may then be set up, e.g., in accordance with the Real-time Transport Protocol (RTP) described in H. Schulzrinne et al., “RTP: A Transport Protocol for Real-Time Applications,” IETF RFC 3550, to carry traffic (e.g., voice information) between the parties.
Some communication networks, such as IP based communication networks, enable an entity, such as a communication unit, to learn its geographic location from a server. Here, the server may employ triangulation or other methods to determine the communication unit's geographic location. The communication unit may then learn its location by issuing a request to the server to which the server responds with the geographic location. For example, an extension to the Dynamic Host Configuration Protocol (DHCP) that may be used to provide a communication unit's geographic location information to the communication unit using DHCP is described in J. Polk et al., “Dynamic Host Configuration Protocol Option for Coordinate-based Location Configuration Information,” IETF RFC 3825. Here, a communication unit requests its location information from a DHCP server using a DHCP request message. The server responds to the request with a DHCP response message that contains the communication unit's geographic location in the form of an option contained in the DHCP response message.